package com.zztl.infiniteBand.util

import android.text.TextUtils

import java.math.BigDecimal
import java.math.RoundingMode
import java.text.DecimalFormat
import java.util.regex.Pattern

/**
 * 文字检查工具类
 * Created by yannable on 2018/2/26.
 */

object TextCheckUtil {

    private val phone = Pattern.compile("^((13[0-9])|(14[579])|(15[012356789])|(18[0-9])|(17[01356789]))\\d{8}$")

    /**
     * 规则1：至少包含大小写字母及数字中的一种
     */
    fun isLetterOrDigit(str: String): Boolean {
        var isLetterOrDigit = false//定义一个boolean值，用来表示是否包含字母或数字
        for (i in 0 until str.length) {
            if (Character.isLetterOrDigit(str[i])) {   //用char包装类中的判断数字的方法判断每一个字符
                isLetterOrDigit = true
            }
        }
        val regex = "^[a-zA-Z0-9]+$"
        return isLetterOrDigit && str.matches(regex.toRegex())
    }

    /**
     * 规则2：至少包含大小写字母及数字中的两种
     * 是否包含
     *
     * @param str
     * @return
     */
    fun isLetterDigit(str: String): Boolean {
        var isDigit = false//是否包含数字
        var isLetter = false//是否包含字母
        for (i in 0 until str.length) {
            if (Character.isDigit(str[i])) {   //用char包装类中的判断数字的方法判断每一个字符
                isDigit = true
            } else if (Character.isLetter(str[i])) {  //用char包装类中的判断字母的方法判断每一个字符
                isLetter = true
            }
        }
        val regex = "^[a-zA-Z0-9]+$"
        return isDigit && isLetter && str.matches(regex.toRegex())
    }

    /**
     * 规则1：包含数字
     */
    fun isDigit(str: String): Boolean {
        var isDigit = true//是否包含数字
        var isLength = false//是否包含数字
        for (i in 0 until str.length) {
            if (!Character.isDigit(str[i])) {   //用char包装类中的判断数字的方法判断每一个字符
                isDigit = false
            }
        }
        val regex = "^[0-9]+$"
        if (str.length == 6) {
            isLength = true
        }
        return isDigit && isLength && str.matches(regex.toRegex())
    }


    fun isMobileNO(mobileNums: String): Boolean {
        /**
         * 判断字符串是否符合手机号码格式
         * 移动号段: 134,135,136,137,138,139,147,150,151,152,157,158,159,170,178,182,183,184,187,188
         * 联通号段: 130,131,132,145,155,156,170,171,175,176,185,186
         * 电信号段: 133,149,153,170,173,177,180,181,189
         * @param str
         * @return 待检测的字符串
         */
        //        String telRegex = "^((13[0-9])|(14[5,7,9])|(15[^4])|(18[0-9])|(17[0,1,3,5,6,7,8]))\\d{8}$";// "[1]"代表第1位为数字1，"[358]"代表第二位可以为3、5、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
        return if (TextUtils.isEmpty(mobileNums)) false else phone.matcher(mobileNums).matches()

    }

    fun getFormatDoubleMoney(value: Double): String {
        val df = DecimalFormat()
        df.minimumFractionDigits = 2
        df.maximumFractionDigits = 2
        return df.format(value)
    }


    fun getTwoPointStr(value: Double): String {
        val s = value.toString()
        return if (s.contains(".") && s.length - s.indexOf(".") > 3) {
            s.substring(0, s.indexOf(".") + 3)
        } else s
    }


    fun formatDouble2(d: Double): Double {

        val bg = BigDecimal(d + 0.001).setScale(2, RoundingMode.HALF_UP)


        return bg.toDouble()
    }


    fun formatDouble8(d: Double): Double {

        val bg = BigDecimal(d + 0.000000001).setScale(2, RoundingMode.HALF_UP)


        return bg.toDouble()
    }

    /*
     */
    /**
     * 输入框输入值的范围  1000-0.001（EditText的属性：android:numeric="decimal"）
     *
     * @param txtInput
     *//*
    public static void setRegion(EditText txtInput,String max,String min) {
        txtInput.addTextChangedListener(new TextWatcher() {
            @Override
            public void afterTextChanged(Editable edt) {
                String temp = edt.toString();
                int posDot = temp.indexOf(".");
                //小数点之前保留3位数字或者一千
                if (posDot <= 0) {
                    //temp
                    if (temp.equals(max)) {
                        return;
                    } else {
                        if (temp.length() <= 3) {
                            return;
                        } else {
                            edt.delete(3, 4);
                            return;
                        }
                    }
                }
                //保留2位小数
                if (temp.length() - posDot - 1 > 2) {
                    edt.delete(posDot + 3, posDot + 4);
                }
            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

            }

            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

            }
        });
    }*/


}
